<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/preempt_mask.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/preempt_mask.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="Maybe">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_TElOVVhfUFJFRU1QVF9NQVNLX0hfMA__"><span class="b">LINUX_PREEMPT_MASK_H</span></a>
<a name="2" /><span class="Maybe">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_TElOVVhfUFJFRU1QVF9NQVNLX0hfMA__"><span class="b">LINUX_PREEMPT_MASK_H</span></a>
<a name="3" /><span class="Maybe">       3:</span> 
<a name="4" /><span class="Maybe">       4:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">preempt</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="5" /><span class="Maybe">       5:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="m">asm</span><span class="f">/</span><span class="b">hardirq</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="6" /><span class="Maybe">       6:</span> 
<a name="7" /><span class="Maybe">       7:</span> <span class="k">/*</span>
<a name="8" /><span class="Maybe">       8:</span> <span class="k"> * We put the hardirq and softirq counter into the preemption</span>
<a name="9" /><span class="Maybe">       9:</span> <span class="k"> * counter. The bitmask has the following meaning:</span>
<a name="10" /><span class="Maybe">      10:</span> <span class="k"> *</span>
<a name="11" /><span class="Maybe">      11:</span> <span class="k"> * - bits 0-7 are the preemption count (max preemption depth: 256)</span>
<a name="12" /><span class="Maybe">      12:</span> <span class="k"> * - bits 8-15 are the softirq count (max # of softirqs: 256)</span>
<a name="13" /><span class="Maybe">      13:</span> <span class="k"> *</span>
<a name="14" /><span class="Maybe">      14:</span> <span class="k"> * The hardirq count could in theory be the same as the number of</span>
<a name="15" /><span class="Maybe">      15:</span> <span class="k"> * interrupts in the system, but we run all interrupt handlers with</span>
<a name="16" /><span class="Maybe">      16:</span> <span class="k"> * interrupts disabled, so we cannot have nesting interrupts. Though</span>
<a name="17" /><span class="Maybe">      17:</span> <span class="k"> * there are a few palaeontologic drivers which reenable interrupts in</span>
<a name="18" /><span class="Maybe">      18:</span> <span class="k"> * the handler, so we need more than one bit here.</span>
<a name="19" /><span class="Maybe">      19:</span> <span class="k"> *</span>
<a name="20" /><span class="Maybe">      20:</span> <span class="k"> * PREEMPT_MASK:    0x000000ff</span>
<a name="21" /><span class="Maybe">      21:</span> <span class="k"> * SOFTIRQ_MASK:    0x0000ff00</span>
<a name="22" /><span class="Maybe">      22:</span> <span class="k"> * HARDIRQ_MASK:    0x000f0000</span>
<a name="23" /><span class="Maybe">      23:</span> <span class="k"> *     NMI_MASK:    0x00100000</span>
<a name="24" /><span class="Maybe">      24:</span> <span class="k"> * PREEMPT_ACTIVE:    0x00200000</span>
<a name="25" /><span class="Maybe">      25:</span> <span class="k"> */</span>
<a name="26" /><span class="Maybe">      26:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_UFJFRU1QVF9CSVRTXzA_"><span class="b">PREEMPT_BITS</span></a>    <span class="c">8</span>
<a name="27" /><span class="Maybe">      27:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U09GVElSUV9CSVRTXzA_"><span class="b">SOFTIRQ_BITS</span></a>    <span class="c">8</span>
<a name="28" /><span class="Maybe">      28:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_SEFSRElSUV9CSVRTXzA_"><span class="b">HARDIRQ_BITS</span></a>    <span class="c">4</span>
<a name="29" /><span class="Maybe">      29:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Tk1JX0JJVFNfMA__"><span class="b">NMI_BITS</span></a>    <span class="c">1</span>
<a name="30" /><span class="Maybe">      30:</span> 
<a name="31" /><span class="Maybe">      31:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_UFJFRU1QVF9TSElGVF8w"><span class="b">PREEMPT_SHIFT</span></a>    <span class="c">0</span>
<a name="32" /><span class="Maybe">      32:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U09GVElSUV9TSElGVF8w"><span class="b">SOFTIRQ_SHIFT</span></a>    <span class="f">(</span><a href="cpu.c_macros_noref.html#_UFJFRU1QVF9TSElGVF8w"><span class="b">PREEMPT_SHIFT</span></a> <span class="f">+</span> <a href="cpu.c_macros_noref.html#_UFJFRU1QVF9CSVRTXzA_"><span class="b">PREEMPT_BITS</span></a><span class="f">)</span>
<a name="33" /><span class="Maybe">      33:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_SEFSRElSUV9TSElGVF8w"><span class="b">HARDIRQ_SHIFT</span></a>    <span class="f">(</span><a href="cpu.c_macros_noref.html#_U09GVElSUV9TSElGVF8w"><span class="b">SOFTIRQ_SHIFT</span></a> <span class="f">+</span> <a href="cpu.c_macros_noref.html#_U09GVElSUV9CSVRTXzA_"><span class="b">SOFTIRQ_BITS</span></a><span class="f">)</span>
<a name="34" /><span class="Maybe">      34:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Tk1JX1NISUZUXzA_"><span class="b">NMI_SHIFT</span></a>    <span class="f">(</span><a href="cpu.c_macros_noref.html#_SEFSRElSUV9TSElGVF8w"><span class="b">HARDIRQ_SHIFT</span></a> <span class="f">+</span> <a href="cpu.c_macros_noref.html#_SEFSRElSUV9CSVRTXzA_"><span class="b">HARDIRQ_BITS</span></a><span class="f">)</span>
<a name="35" /><span class="Maybe">      35:</span> 
<a name="36" /><span class="Maybe">      36:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19JUlFfTUFTS18w"><span class="b">__IRQ_MASK</span></a><span class="f">(</span><span class="b">x</span><span class="f">)</span>    <span class="f">(</span><span class="f">(</span><span class="c">1UL</span> <span class="f">&lt;&lt;</span> <span class="f">(</span><span class="b">x</span><span class="f">)</span><span class="f">)</span><span class="f">-</span><span class="c">1</span><span class="f">)</span>
<a name="37" /><span class="Maybe">      37:</span> 
<a name="38" /><span class="Maybe">      38:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_UFJFRU1QVF9NQVNLXzA_"><span class="b">PREEMPT_MASK</span></a>    <span class="f">(</span><a href="cpu.c_macros_noref.html#_X19JUlFfTUFTS18w"><span class="b">__IRQ_MASK</span></a><span class="f">(</span><a href="cpu.c_macros_noref.html#_UFJFRU1QVF9CSVRTXzA_"><span class="b">PREEMPT_BITS</span></a><span class="f">)</span> <span class="f">&lt;&lt;</span> <a href="cpu.c_macros_noref.html#_UFJFRU1QVF9TSElGVF8w"><span class="b">PREEMPT_SHIFT</span></a><span class="f">)</span>
<a name="39" /><span class="Maybe">      39:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U09GVElSUV9NQVNLXzA_"><span class="b">SOFTIRQ_MASK</span></a>    <span class="f">(</span><a href="cpu.c_macros_noref.html#_X19JUlFfTUFTS18w"><span class="b">__IRQ_MASK</span></a><span class="f">(</span><a href="cpu.c_macros_noref.html#_U09GVElSUV9CSVRTXzA_"><span class="b">SOFTIRQ_BITS</span></a><span class="f">)</span> <span class="f">&lt;&lt;</span> <a href="cpu.c_macros_noref.html#_U09GVElSUV9TSElGVF8w"><span class="b">SOFTIRQ_SHIFT</span></a><span class="f">)</span>
<a name="40" /><span class="Maybe">      40:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_SEFSRElSUV9NQVNLXzA_"><span class="b">HARDIRQ_MASK</span></a>    <span class="f">(</span><a href="cpu.c_macros_noref.html#_X19JUlFfTUFTS18w"><span class="b">__IRQ_MASK</span></a><span class="f">(</span><a href="cpu.c_macros_noref.html#_SEFSRElSUV9CSVRTXzA_"><span class="b">HARDIRQ_BITS</span></a><span class="f">)</span> <span class="f">&lt;&lt;</span> <a href="cpu.c_macros_noref.html#_SEFSRElSUV9TSElGVF8w"><span class="b">HARDIRQ_SHIFT</span></a><span class="f">)</span>
<a name="41" /><span class="Maybe">      41:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Tk1JX01BU0tfMA__"><span class="b">NMI_MASK</span></a>    <span class="f">(</span><a href="cpu.c_macros_noref.html#_X19JUlFfTUFTS18w"><span class="b">__IRQ_MASK</span></a><span class="f">(</span><a href="cpu.c_macros_noref.html#_Tk1JX0JJVFNfMA__"><span class="b">NMI_BITS</span></a><span class="f">)</span>     <span class="f">&lt;&lt;</span> <a href="cpu.c_macros_noref.html#_Tk1JX1NISUZUXzA_"><span class="b">NMI_SHIFT</span></a><span class="f">)</span>
<a name="42" /><span class="Maybe">      42:</span> 
<a name="43" /><span class="Maybe">      43:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_UFJFRU1QVF9PRkZTRVRfMA__"><span class="b">PREEMPT_OFFSET</span></a>    <span class="f">(</span><span class="c">1UL</span> <span class="f">&lt;&lt;</span> <a href="cpu.c_macros_noref.html#_UFJFRU1QVF9TSElGVF8w"><span class="b">PREEMPT_SHIFT</span></a><span class="f">)</span>
<a name="44" /><span class="Maybe">      44:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U09GVElSUV9PRkZTRVRfMA__"><span class="b">SOFTIRQ_OFFSET</span></a>    <span class="f">(</span><span class="c">1UL</span> <span class="f">&lt;&lt;</span> <a href="cpu.c_macros_noref.html#_U09GVElSUV9TSElGVF8w"><span class="b">SOFTIRQ_SHIFT</span></a><span class="f">)</span>
<a name="45" /><span class="Maybe">      45:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_SEFSRElSUV9PRkZTRVRfMA__"><span class="b">HARDIRQ_OFFSET</span></a>    <span class="f">(</span><span class="c">1UL</span> <span class="f">&lt;&lt;</span> <a href="cpu.c_macros_noref.html#_SEFSRElSUV9TSElGVF8w"><span class="b">HARDIRQ_SHIFT</span></a><span class="f">)</span>
<a name="46" /><span class="Maybe">      46:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Tk1JX09GRlNFVF8w"><span class="b">NMI_OFFSET</span></a>    <span class="f">(</span><span class="c">1UL</span> <span class="f">&lt;&lt;</span> <a href="cpu.c_macros_noref.html#_Tk1JX1NISUZUXzA_"><span class="b">NMI_SHIFT</span></a><span class="f">)</span>
<a name="47" /><span class="Maybe">      47:</span> 
<a name="48" /><span class="Maybe">      48:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U09GVElSUV9ESVNBQkxFX09GRlNFVF8w"><span class="b">SOFTIRQ_DISABLE_OFFSET</span></a>    <span class="f">(</span><span class="c">2</span> <span class="f">*</span> <a href="cpu.c_macros_noref.html#_U09GVElSUV9PRkZTRVRfMA__"><span class="b">SOFTIRQ_OFFSET</span></a><span class="f">)</span>
<a name="49" /><span class="Maybe">      49:</span> 
<a name="50" /><span class="Maybe">      50:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_UFJFRU1QVF9BQ1RJVkVfQklUU18w"><span class="b">PREEMPT_ACTIVE_BITS</span></a>    <span class="c">1</span>
<a name="51" /><span class="Maybe">      51:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_UFJFRU1QVF9BQ1RJVkVfU0hJRlRfMA__"><span class="b">PREEMPT_ACTIVE_SHIFT</span></a>    <span class="f">(</span><a href="cpu.c_macros_noref.html#_Tk1JX1NISUZUXzA_"><span class="b">NMI_SHIFT</span></a> <span class="f">+</span> <a href="cpu.c_macros_noref.html#_Tk1JX0JJVFNfMA__"><span class="b">NMI_BITS</span></a><span class="f">)</span>
<a name="52" /><span class="Maybe">      52:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_UFJFRU1QVF9BQ1RJVkVfMA__"><span class="b">PREEMPT_ACTIVE</span></a>    <span class="f">(</span><a href="cpu.c_macros_noref.html#_X19JUlFfTUFTS18w"><span class="b">__IRQ_MASK</span></a><span class="f">(</span><a href="cpu.c_macros_noref.html#_UFJFRU1QVF9BQ1RJVkVfQklUU18w"><span class="b">PREEMPT_ACTIVE_BITS</span></a><span class="f">)</span> <span class="f">&lt;&lt;</span> <a href="cpu.c_macros_noref.html#_UFJFRU1QVF9BQ1RJVkVfU0hJRlRfMA__"><span class="b">PREEMPT_ACTIVE_SHIFT</span></a><span class="f">)</span>
<a name="53" /><span class="Maybe">      53:</span> 
<a name="54" /><span class="Maybe">      54:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_aGFyZGlycV9jb3VudF8w"><span class="b">hardirq_count</span></a><span class="f">(</span><span class="f">)</span>    <span class="f">(</span><span class="b">preempt_count</span><span class="f">(</span><span class="f">)</span> <span class="f">&amp;</span> <a href="cpu.c_macros_noref.html#_SEFSRElSUV9NQVNLXzA_"><span class="b">HARDIRQ_MASK</span></a><span class="f">)</span>
<a name="55" /><span class="Maybe">      55:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_c29mdGlycV9jb3VudF8w"><span class="b">softirq_count</span></a><span class="f">(</span><span class="f">)</span>    <span class="f">(</span><span class="b">preempt_count</span><span class="f">(</span><span class="f">)</span> <span class="f">&amp;</span> <a href="cpu.c_macros_noref.html#_U09GVElSUV9NQVNLXzA_"><span class="b">SOFTIRQ_MASK</span></a><span class="f">)</span>
<a name="56" /><span class="Maybe">      56:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_aXJxX2NvdW50XzA_"><span class="b">irq_count</span></a><span class="f">(</span><span class="f">)</span>    <span class="f">(</span><span class="b">preempt_count</span><span class="f">(</span><span class="f">)</span> <span class="f">&amp;</span> <span class="f">(</span><a href="cpu.c_macros_noref.html#_SEFSRElSUV9NQVNLXzA_"><span class="b">HARDIRQ_MASK</span></a> <span class="f">|</span> <a href="cpu.c_macros_noref.html#_U09GVElSUV9NQVNLXzA_"><span class="b">SOFTIRQ_MASK</span></a> \
<a name="57" /><span class="Maybe">      57:</span>                  <span class="f">|</span> <a href="cpu.c_macros_noref.html#_Tk1JX01BU0tfMA__"><span class="b">NMI_MASK</span></a><span class="f">)</span><span class="f">)</span>
<a name="58" /><span class="Maybe">      58:</span> 
<a name="59" /><span class="Maybe">      59:</span> <span class="k">/*</span>
<a name="60" /><span class="Maybe">      60:</span> <span class="k"> * Are we doing bottom half or hardware interrupt processing?</span>
<a name="61" /><span class="Maybe">      61:</span> <span class="k"> * Are we in a softirq context? Interrupt context?</span>
<a name="62" /><span class="Maybe">      62:</span> <span class="k"> * in_softirq - Are we currently processing softirq or have bh disabled?</span>
<a name="63" /><span class="Maybe">      63:</span> <span class="k"> * in_serving_softirq - Are we currently processing softirq?</span>
<a name="64" /><span class="Maybe">      64:</span> <span class="k"> */</span>
<a name="65" /><span class="Maybe">      65:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_aW5faXJxXzA_"><span class="b">in_irq</span></a><span class="f">(</span><span class="f">)</span>        <span class="f">(</span><a href="cpu.c_macros_noref.html#_aGFyZGlycV9jb3VudF8w"><span class="b">hardirq_count</span></a><span class="f">(</span><span class="f">)</span><span class="f">)</span>
<a name="66" /><span class="Maybe">      66:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_aW5fc29mdGlycV8w"><span class="b">in_softirq</span></a><span class="f">(</span><span class="f">)</span>        <span class="f">(</span><a href="cpu.c_macros_noref.html#_c29mdGlycV9jb3VudF8w"><span class="b">softirq_count</span></a><span class="f">(</span><span class="f">)</span><span class="f">)</span>
<a name="67" /><span class="Maybe">      67:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_aW5faW50ZXJydXB0XzA_"><span class="b">in_interrupt</span></a><span class="f">(</span><span class="f">)</span>        <span class="f">(</span><a href="cpu.c_macros_noref.html#_aXJxX2NvdW50XzA_"><span class="b">irq_count</span></a><span class="f">(</span><span class="f">)</span><span class="f">)</span>
<a name="68" /><span class="Maybe">      68:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_aW5fc2VydmluZ19zb2Z0aXJxXzA_"><span class="b">in_serving_softirq</span></a><span class="f">(</span><span class="f">)</span>    <span class="f">(</span><a href="cpu.c_macros_noref.html#_c29mdGlycV9jb3VudF8w"><span class="b">softirq_count</span></a><span class="f">(</span><span class="f">)</span> <span class="f">&amp;</span> <a href="cpu.c_macros_noref.html#_U09GVElSUV9PRkZTRVRfMA__"><span class="b">SOFTIRQ_OFFSET</span></a><span class="f">)</span>
<a name="69" /><span class="Maybe">      69:</span> 
<a name="70" /><span class="Maybe">      70:</span> <span class="k">/*</span>
<a name="71" /><span class="Maybe">      71:</span> <span class="k"> * Are we in NMI context?</span>
<a name="72" /><span class="Maybe">      72:</span> <span class="k"> */</span>
<a name="73" /><span class="Maybe">      73:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_aW5fbm1pXzA_"><span class="b">in_nmi</span></a><span class="f">(</span><span class="f">)</span>    <span class="f">(</span><span class="b">preempt_count</span><span class="f">(</span><span class="f">)</span> <span class="f">&amp;</span> <a href="cpu.c_macros_noref.html#_Tk1JX01BU0tfMA__"><span class="b">NMI_MASK</span></a><span class="f">)</span>
<a name="74" /><span class="Maybe">      74:</span> 
<a name="75" /><span class="False">      75:</span> <span class="f">#</span><span class="n">if</span> <span class="b">defined</span><span class="f">(</span><span class="b">CONFIG_PREEMPT_COUNT</span><span class="f">)</span>
<a name="76" /><span class="False">      76:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_UFJFRU1QVF9DSEVDS19PRkZTRVRfMA__"><span class="b">PREEMPT_CHECK_OFFSET</span></a> <span class="c">1</span>
<a name="77" /><span class="Maybe">      77:</span> <span class="f">#</span><span class="n">else</span>
<a name="78" /><span class="Maybe">      78:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_UFJFRU1QVF9DSEVDS19PRkZTRVRfMA__"><span class="b">PREEMPT_CHECK_OFFSET</span></a> <span class="c">0</span>
<a name="79" /><span class="Maybe">      79:</span> <span class="f">#</span><span class="n">endif</span>
<a name="80" /><span class="Maybe">      80:</span> 
<a name="81" /><span class="Maybe">      81:</span> <span class="k">/*</span>
<a name="82" /><span class="Maybe">      82:</span> <span class="k"> * Are we running in atomic context?  WARNING: this macro cannot</span>
<a name="83" /><span class="Maybe">      83:</span> <span class="k"> * always detect atomic context; in particular, it cannot know about</span>
<a name="84" /><span class="Maybe">      84:</span> <span class="k"> * held spinlocks in non-preemptible kernels.  Thus it should not be</span>
<a name="85" /><span class="Maybe">      85:</span> <span class="k"> * used in the general case to determine whether sleeping is possible.</span>
<a name="86" /><span class="Maybe">      86:</span> <span class="k"> * Do not use in_atomic() in driver code.</span>
<a name="87" /><span class="Maybe">      87:</span> <span class="k"> */</span>
<a name="88" /><span class="Maybe">      88:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_aW5fYXRvbWljXzA_"><span class="b">in_atomic</span></a><span class="f">(</span><span class="f">)</span>    <span class="f">(</span><span class="f">(</span><span class="b">preempt_count</span><span class="f">(</span><span class="f">)</span> <span class="f">&amp;</span> <span class="f">~</span><a href="cpu.c_macros_noref.html#_UFJFRU1QVF9BQ1RJVkVfMA__"><span class="b">PREEMPT_ACTIVE</span></a><span class="f">)</span> <span class="f">!=</span> <span class="c">0</span><span class="f">)</span>
<a name="89" /><span class="Maybe">      89:</span> 
<a name="90" /><span class="Maybe">      90:</span> <span class="k">/*</span>
<a name="91" /><span class="Maybe">      91:</span> <span class="k"> * Check whether we were atomic before we did preempt_disable():</span>
<a name="92" /><span class="Maybe">      92:</span> <span class="k"> * (used by the scheduler, *after* releasing the kernel lock)</span>
<a name="93" /><span class="Maybe">      93:</span> <span class="k"> */</span>
<a name="94" /><span class="Maybe">      94:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_aW5fYXRvbWljX3ByZWVtcHRfb2ZmXzA_"><span class="b">in_atomic_preempt_off</span></a><span class="f">(</span><span class="f">)</span> \
<a name="95" /><span class="Maybe">      95:</span>         <span class="f">(</span><span class="f">(</span><span class="b">preempt_count</span><span class="f">(</span><span class="f">)</span> <span class="f">&amp;</span> <span class="f">~</span><a href="cpu.c_macros_noref.html#_UFJFRU1QVF9BQ1RJVkVfMA__"><span class="b">PREEMPT_ACTIVE</span></a><span class="f">)</span> <span class="f">!=</span> <a href="cpu.c_macros_noref.html#_UFJFRU1QVF9DSEVDS19PRkZTRVRfMA__"><span class="b">PREEMPT_CHECK_OFFSET</span></a><span class="f">)</span>
<a name="96" /><span class="Maybe">      96:</span> 
<a name="97" /><span class="False">      97:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_PREEMPT_COUNT</span>
<a name="98" /><span class="False">      98:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_cHJlZW1wdGlibGVfMA__"><span class="b">preemptible</span></a><span class="f">(</span><span class="f">)</span>    <span class="f">(</span><span class="b">preempt_count</span><span class="f">(</span><span class="f">)</span> <span class="f">==</span> <span class="c">0</span> <span class="f">&amp;&amp;</span> <span class="f">!</span><a href="cpu.c_macros_noref.html#_aXJxc19kaXNhYmxlZF8w"><span class="b">irqs_disabled</span></a><span class="f">(</span><span class="f">)</span><span class="f">)</span>
<a name="99" /><span class="Maybe">      99:</span> <span class="f">#</span><span class="n">else</span>
<a name="100" /><span class="Maybe">     100:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_cHJlZW1wdGlibGVfMA__"><span class="b">preemptible</span></a><span class="f">(</span><span class="f">)</span>    <span class="c">0</span>
<a name="101" /><span class="Maybe">     101:</span> <span class="f">#</span><span class="n">endif</span>
<a name="102" /><span class="Maybe">     102:</span> 
<a name="103" /><span class="True">     103:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* LINUX_PREEMPT_MASK_H */</span>
<a name="104" /><span class="True">     104:</span> </pre>
  </body>
</html>
